package com.r2coding.music.api;

import com.github.pagehelper.PageInfo;
import com.r2coding.common.util.Result;
import com.r2coding.music.entity.SingerEntity;
import com.r2coding.music.service.SingerService;
import com.r2coding.music.vo.req.QuerySingerListReqVo;
import com.r2coding.music.vo.resp.SongRespVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author:98k灬
 * @since:2022/05/06 21:44
 **/
@RestController
@RequestMapping("/api/singer")
public class ApiSingerController {
    @Autowired
    SingerService singerService;

    /**
     * 条件分页查询歌手信息列表
     *
     * @param reqVo 查询条件
     * @return 统一响应体
     */
    @PostMapping("/list")
    public Result list(@RequestBody QuerySingerListReqVo reqVo) {
        PageInfo<SingerEntity> pageInfo = singerService.selectList(reqVo);
        return Result.ok(pageInfo);
    }

    /**
     * 查询全部的歌手信息
     *
     * @return 统一响应体
     */
    @GetMapping("/getAllSinger")
    public Result getAllSinger() {
        List<SingerEntity> list = singerService.list();
        return Result.ok(list);
    }

    /**
     * 查询歌手详情
     *
     * @param id 歌手id
     * @return 统一响应体
     */
    @GetMapping("/info/{id}")
    public Result info(@PathVariable("id") Integer id) {
        SingerEntity singer = singerService.getById(id);
        return Result.ok(singer);
    }

    /**
     * 根据歌手id查询歌曲信息
     *
     * @param id 歌手id
     * @return 统一响应体
     */
    @GetMapping("/getAllSongs/{id}")
    public Result getAllSongs(@PathVariable("id") Integer id) {
        List<SongRespVo> list = singerService.getAllSongs(id);
        return Result.ok(list);
    }
}
